Closed Bug 979665 Opened 11 years ago Closed 11 years ago

moving files between WEBIDL_FILES and PREPROCESSED_WEBIDL_FILES needs a clobber

Categories

(Firefox Build System :: General, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
mozilla30

People

(Reporter: heycam, Assigned: gps)

References

(Blocks 1 open bug)

Details

(Keywords: regression)

Attachments

(1 file)

If I take one of the files listed in dom/webidl/moz.build's WEBIDL_FILES array and move it to PREPROCESSED_WEBIDL_FILES, I get the following error from Codegen.py. A clobber fixes it, but ideally we wouldn't need one. 0:21.83 Traceback (most recent call last): 0:21.83 File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main 0:21.83 "__main__", fname, loader, pkg_name) 0:21.83 File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code 0:21.83 exec code in run_globals 0:21.83 File "/z/moz2/central/python/mozbuild/mozbuild/action/webidl.py", line 17, in <module> 0:21.83 sys.exit(main(sys.argv[1:])) 0:21.83 File "/z/moz2/central/python/mozbuild/mozbuild/action/webidl.py", line 13, in main 0:21.83 manager.generate_build_files() 0:21.83 File "/z/moz2/central/dom/bindings/mozwebidlcodegen/__init__.py", line 272, in generate_build_files 0:21.83 sha1=self._input_hashes[filename], 0:21.83 KeyError: u'/z/moz2/central/dom/webidl/CSS.webidl' 0:21.91 make[5]: *** [codegen.pp] Error 255
Blocks: clobber
This used to work correctly; I'd made a point of testing exactly this behavior when we first added preprocessed webidl support. I'm guessing bug 928195 broke this inadvertently. :(
Blocks: 928195
Keywords: regression
This patch fixes a bug in WebIDL code generation that could be triggered if an input file changed locations but the original file remained on disk. When computing the set of source .webidl files to perform code generation on, we failed to prune files that were no longer part of the active set of input files. References to files in old locations would get pulled in to the regeneration set, leading to a cryptic KeyError during code generation. The added test failed with a similar stack as the one reported in the bug before _compute_changed_inputs() was changed.
Attachment #8386591 - Flags: review?(nfroyd)
Assignee: nobody → gps
Status: NEW → ASSIGNED
Comment on attachment 8386591 [details] [diff] [review] Properly detect WebIDL type changes Review of attachment 8386591 [details] [diff] [review]: ----------------------------------------------------------------- ::: dom/bindings/mozwebidlcodegen/__init__.py @@ +389,5 @@ > if any(dep for dep in v['inputs'] if dep in changed_inputs): > changed_inputs.add(v['filename']) > > + # Only use paths that are known to our current state. > + # This filters outs files that were deleted or changed type (e.g. from Nit: "this filters out".
Attachment #8386591 - Flags: review?(nfroyd) → review+
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla30
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: